import java.util.Arrays;

/**
 * @author LKQ
 * @date 2022/2/21 22:13
 * @description
 */
public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        int[] nums = {3, 30, 34, 5, 9};
        solution.largestNumber(nums);
    }
    public String largestNumber(int[] nums) {
        int n = nums.length;
        // 转换为包装类型，以便传入比较器
        Integer[] numsArr = new Integer[n];
        for (int i = 0; i < n; i++) {
            numsArr[i] = nums[i];
        }
        Arrays.sort(numsArr, (x, y) -> {
            long sx = 10, sy = 10;
            while (sx <= x) {
                sx *= 10;
            }
            while (sy <= y) {
                sy *= 10;
            }
            return (int) (-sy * x - y + sx * y + x);
        });
        if (numsArr[0] == 0) {
            return "0";
        }
        StringBuffer ret = new StringBuffer();
        for (int num : numsArr) {
            ret.append(num);
        }
        return ret.toString();
    }
}
